Handle transparent colors better in GtkStyle emulation
authorAlexander Larsson <alexl@redhat.com>
Thu, 28 Jun 2012 19:30:24 +0000 (21:30 +0200)
committerAlexander Larsson <alexl@redhat.com>
Thu, 28 Jun 2012 19:48:14 +0000 (21:48 +0200)
We can't expose colors with alpha in the GtkStyle colors, since
GdkColor has no alpha. Currently we throw away alpha completely,
which fails very badly for completely transparent backgrounds,
which now is the default for most widgets, as it typically
end up with black-on-black.

We handle this by falling back on the default/previous colors for
transparent colors. This is is simple and avoids complete failure.

https://bugzilla.gnome.org/show_bug.cgi?id=671437

gtk/deprecated/gtkstyle.c

index 526636890cdba1057ab13f5fb6f0cb05680b5792..16e3ce4542cfead8853aa2d307781da31469f1b6 100644 (file)
@@ -673,7 +673,7 @@ set_color (GtkStyle        *style,
       break;
     }
 
-  if (color)
+  if (color && color->alpha > 0.01)
     {
       dest->pixel = 0;
       dest->red = CLAMP ((guint) (color->red * 65535), 0, 65535);